package 传智播客_黑马.java基础.集合总览.Map.常用实现类;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*
HashMap存储自定义类型键值
Map集合保证key是唯一的
    作为key的元素,必须重写hashCode方法和equals方法,以保证key唯一
 */
public class LearnHashMap {
    public static void main(String[] args) {
        show02();
    }
    /*
    使用HashMap存储自定义类型键值
    key:Person类型
        Person类必须重写hashCode和equals方法
    value:String 类型可以重复
     */
    private static void show02() {
        //创建HashMap集合
        HashMap<Person, String> map = new HashMap<>();
        //往集合中添加元素
        map.put(new Person("女王",18),"英国");
        map.put(new Person("秦始皇",18),"秦国");
        map.put(new Person("普京",30),"俄罗斯");
        map.put(new Person("女王",18),"毛里求斯");
        //使用entrySet集合和增强Map集合
        Set<Map.Entry<Person, String>> set = map.entrySet();
        for (Map.Entry<Person, String> person : set) {
            Person key = person.getKey();
            String value = person.getValue();
            System.out.println(key + "-->" + value);
        }
    }

    /*
    HashMap存储自定义键值
    key使用String类型
        String类重写了hashCode方法和equals方法,可以保证key唯一
    value:Person类型
        value可以重复
     */
    private static void show01() {
        //创建HashMap集合
        HashMap<String,Person> map = new HashMap<>();
        //网集合中添加其他元素
        map.put("北京",new Person("张三",18));
        map.put("上海",new Person("李四",19));
        map.put("广州",new Person("王五",20));
        map.put("深圳",new Person("赵六",21));
        map.put("北京",new Person("田七",18));
        //遍历map集合
        Set<Map.Entry<String, Person>> set = map.entrySet();
        for (Map.Entry<String, Person> entry : set) {
            System.out.println(entry);
        }
    }
}
